package a27_GenericityUse.ComprehensivePra;

/**
 * @Author quan
 * @Description 通配符的综合练习
 * @Date 2023/2/19 21:37
 */

import java.util.ArrayList;

/**要求：定义一个继承结构： 动物——>猫,狗——>波斯猫,狸花猫,泰迪,哈士奇
 * 属性：姓名,年龄
 * 行为：吃东西
 *      波斯猫方法体打印：一直叫做***的*岁的波斯猫正在吃小饼干
 *      狸花猫方法体打印：一直叫做***的*岁的狸花猫正在吃小鱼干
 *      泰迪  方法体打印：一直叫做***的*岁的泰迪正在吃小骨头
 *      哈士奇方法体打印：一直叫做***的*岁的哈士奇正在啃沙发
 * 测试类中定义一个方法用于饲养动物：
 * public static void keepPet(ArrayList<???> list)
 * //遍历集合，调用动物的eat方法
 * 要求1：该方法能养所有的猫，但不能养狗
 * 要求2：该方法能养所有的狗，但不能养猫
 * 要求3：该方法能养所有的动物，但不能传递其他类型
 * */
public class TestDemo {
    public static void main(String[] args) {
        ArrayList<LihuaCat> list1 = new ArrayList<>();
        ArrayList<PersianCat> list2 = new ArrayList<>();
        ArrayList<TeddyDog> list3 = new ArrayList<>();
        ArrayList<HuskyDog> list4 = new ArrayList<>();
        keepPet(list1);
        keepPet(list2);
        keepPet(list3);
        keepPet(list4);
    }
    //饲养动物的方法
//    要求1：该方法能养所有的猫，但不能养狗
   /* public static void keepPet(ArrayList<? extends Cat> list)
    {
        //遍历集合，调用动物的eat方法
    }*/

//    要求2：该方法能养所有的狗，但不能养猫
//    public static void keepPet(ArrayList<? extends Dog> list)
//    {
//    }

//    要求3：该方法能养所有的动物，但不能传递其他类型
    public static void keepPet(ArrayList<? extends Animal> list)
    {//将extends改为super,则满足条件的是Animal的父类，此题用不到
    }
}
